package com.common.bean;

import android.os.Parcel;

/**
 * 应用消息结构体基类 <br>
 * Created 2014-5-7 下午8:29:07
 * 
 * @version
 * @author linsj
 * 
 * @see
 */

public abstract class AppMsgData {
	/** 唯一标识消息的ID，与lMsgID区别：后者只用于排序及判重 */
	public String strGenerateID = "";
	
	/** 消息ID，服务端对此有排序，从数据库取数据时，可以取此ID之前的消息 */
	public long lMsgID = 0;
	
	/** 消息是否已读过，ImsMessage.NOT_READ(0)：未读；　ImsMessage.READ(1)：已读 */
	public int iRead = 0;
	
	/**MSG的GroupKey*/
	public String strGroupKey = "";
	
	/**MSG的GroupType*/
	public int iGroupType = 0;
	
	/**MSG的Fid*/
	public long lFid = 0l;
	
	/**MSG的MultpTid*/
	public long lMultpTid = 0l;

	/**
	 * 根据JSON来获得应用消息所需的数据 <br>
	 * Created 2014-5-7 下午8:30:25
	 * 
	 * @param strJson
	 *            数据源
	 * @author : linsj
	 */
	public abstract void parseJson(String strJson);
	
	/**
	 * 读出基类数据
	 * 
	 * <br>Created 2014-5-12 下午10:53:32
	 * @param in	流
	 * @author     :  linsj
	 */
	protected void parcelInData(Parcel in) {		
		strGenerateID = in.readString();
		lMsgID = in.readLong();
		iRead = in.readInt();
		strGroupKey = in.readString();
		iGroupType = in.readInt();
		lFid = in.readLong();
		lMultpTid = in.readLong();
	}
	
	/**
	 * 写入基类数据
	 * 
	 * <br>Created 2014-5-12 下午10:54:28
	 * @param dest		目标流
	 * @param flags		我也不知道是啥，无视之
	 * @author        :  linsj
	 */
	protected void writeToParcel(Parcel dest, int flags) {
		dest.writeString(strGenerateID);
		dest.writeLong(lMsgID);		
		dest.writeInt(iRead);
		dest.writeString(strGroupKey);
		dest.writeInt(iGroupType);
		dest.writeLong(lFid);
		dest.writeLong(lMultpTid);
	}
}
